#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
我们把变量从内存中变成可存储或传输的过程称之为序列化，在Python中叫pickling，在其他语言中也被称之为serialization，marshalling，flattening等等，都是一个意思。

序列化之后，就可以把序列化后的内容写入磁盘，或者通过网络传输到别的机器上。

反过来，把变量内容从序列化的对象重新读到内存里称之为反序列化，即unpickling。

Python提供了pickle模块来实现序列化。

Pickle的问题和所有其他编程语言特有的序列化问题一样，就是它只能用于Python，并且可能不同版本的Python彼此都不兼容，
因此，只能用Pickle保存那些不重要的数据，不能成功地反序列化也没关系。
>>>还是别用了哈哈
"""
import pickle


def pickle_main():
    d = dict(name='Bob', age=20, score=88)
    # pickle.dumps()方法把任意对象序列化成一个bytes，然后，就可以把这个bytes写入文件
    dums = pickle.dumps(d)
    # pickle.dump()直接把对象序列化后写入一个file-like Object
    with open('dump.txt', 'wb') as f:     # 写二进制 用wb
        dum = pickle.dump(d, f)   # 返回值是None
    print(dums)
    print(dum)
    with open('dump.txt', 'rb') as f:
        s = f.read()
        print(s)
    with open('dump.txt', 'rb') as f:
        d = pickle.load(f)
        print(d)


if __name__ == "__main__":
    pickle_main()
